// #include <iostream>
// #include <string>
// using namespace std;
// //类模板对象做函数参数
// template<class T1, class T2>
// class Person
// {
// public:
//     Person(T1 name, T2 age)
//     {
//         this->m_Name = name;
//         this->m_Age  = age;
//     }
//     void ShowPerson()
//     {
//         cout << "姓名" << this->m_Name<< "年龄" << this->m_Age << endl;
//     }
//     T1 m_Name;
//     T2 m_Age;
// };
// //1.制定传入类型
// void printfPerson1(Person<string, int> & p)
// {
//     p.ShowPerson();
// }
// void test01()
// {
//     Person<string, int> p("sunwukong", 100);
//     printfPerson1(p);
// }
// //2.参数模板化
// template<class T1, class T2>
// void printPerson2(Person<T1, T2> & p)
// {
//     p.ShowPerson();
// }
// void test02()
// {
//     Person p("zhubajie", 100);
//     printPerson2(p);
// }
// //3.整个类模板化
// template<class T>
// void printPerson3(T& p)
// {
//     p.ShowPerson();
// }
// void test03()
// {
//     Person p("tangseng", 20);
//     printPerson3(p);
//
// }
// int main()
// {
//     test01();
//     test02();
//     test03();
//     return 0;
// }